﻿using HtmlAgilityPack;
using Xunit;

namespace BattleNet.DataAccess.Extensions
{
    public class HtmlNodeExtensionsTests
    {
        private HtmlDocument _doc;
        public HtmlNodeExtensionsTests()
        {
            _doc = new HtmlDocument();
        }
        [Fact]
        public void HasClass_DoesNotContainsClassAttribute_Returnsfalse()
        {
            HtmlNode hm = new HtmlNode(HtmlNodeType.Text,_doc,0);
            bool hasClass = hm.HasClass("DontHaveAClass");
            Assert.False(hasClass);
        }

        [Fact]
        public void HasClass_ClassAttrDoesntContainClass_Returnsfalse()
        {
            HtmlNode hm = new HtmlNode(HtmlNodeType.Text, _doc, 0);
            hm.Attributes.Add("class","className");
            bool hasClass = hm.HasClass("DontHaveAClass");
            Assert.False(hasClass);
        }

        [Fact]
        public void HasClass_ClassAttrContainsClass_ReturnsTrue()
        {
            HtmlNode hm = new HtmlNode(HtmlNodeType.Text, _doc, 0);
            hm.Attributes.Add("class", "IHaveThisClass");
            bool hasClass = hm.HasClass("IHaveThisClass");
            Assert.True(hasClass);
        }

        [Fact]
        public void HasClass_ClassAttrContainsMultipleClasses_ReturnsTrue()
        {
            HtmlNode hm = new HtmlNode(HtmlNodeType.Text, _doc, 0);
            hm.Attributes.Add("class", "IHaveThisClass ThisClass");
            bool hasClass = hm.HasClass("ThisClass");
            Assert.True(hasClass);
        }

        //public static string GetAttributeValue(this HtmlNode node, string attribute)
        //{
        //    return node.GetAttributeValue(attribute, null);
        //}
        
    }
}
